@邪恶贝壳
2年前 提问
1个回答

传统的DNP3安全的脆弱性体现在哪些方面

安全小白成长记
2年前

传统的DNP3安全的脆弱性体现在:

  • 缺少认证:认证的目的是保证收到的信息来自合法的用户,未认证用户设备发送的命令不会被执行。在DNP3的通信过程中,没有任何认证方面的相关定义,攻击者只要找到一个合法地址即可使用功能码建立DNP3通信会话,从而扰乱控制过程。

  • 缺少授权:授权保证不同的特权操作由拥有不同权限的认证用户来完成,这样可以降低误操作与内部攻击的概率。目前DNP3没有基于角色的访问控制机制,也没有对用户进行分类,没有对用户的权限进行划分,这样任意用户可以执行任意功能。

  • 缺乏加密:加密可以保证通信过程中双方的信息不被第三方非法获取。在DNP3协议的通信过程中,地址和命令全部采用明文传输,因此数据可以很容易地被攻击者捕获和解析,为攻击者提供便利。

  • 协议复杂性:除缺乏认证、授权和加密等安全防护机制之外,协议的相对复杂性也是DNP3中存在的安全问题的主要根源。

  • 设计安全问题:应用开发者在使用DNP3设计应用功能的同时应该考虑其功能实现之后导致的安全问题。保证DNP3使用的设计安全性能够处理应用中会出现的各种异常响应以及非法操作等问题,充分保障应用程序的健壮性。

  • 功能码滥用:功能码是DNP3中一项重要的内容,几乎所有通信都涉及功能码。功能码滥用也是导致网络异常的一个主要因素。例如需要引起IDS/IPS开发人员高度关注的一些DNP3消息:关闭主动上送;在DNP3端口上运行非DNP3通信;长时间多重主动上送(响应风暴);授权客户冷重启;未授权客户冷重启;停止应用;热重启;重新初始化数据对象;重新初始化应用;冰冻并清除可能重要的状态信息。

  • TCP/IP安全问题:目前DNP3可以在通用计算机和通用操作系统上实现,运行于TCP/IP协议之上,这样TCP/IP协议自身的安全问题就会不可避免地影响系统网络安全。非法网络数据获取中间人、拒绝服务、IP欺骗等互联网中常用的攻击方法都会威胁DNP3系统的安全。